<div class="body-wrap" xmlns:ext="http://www.extjs.com"><div class="top-tools"><a class="inner-link" href="#Ext.data.LocalStorageProxy-props"><img src="images/default/s.gif" class="item-icon icon-prop">Properties</a>&#13;<a class="inner-link" href="#Ext.data.LocalStorageProxy-methods"><img src="images/default/s.gif" class="item-icon icon-method">Methods</a>&#13;<a class="inner-link" href="#Ext.data.LocalStorageProxy-events"><img src="images/default/s.gif" class="item-icon icon-event">Events</a>&#13;<a class="inner-link" href="#Ext.data.LocalStorageProxy-configs"><img src="images/default/s.gif" class="item-icon icon-config">Config Options</a>&#13;<a class="bookmark" href="../docs/?class=Ext.data.LocalStorageProxy"><img src="images/default/s.gif" class="item-icon icon-fav">Direct Link</a>&#13;</div><div class="inheritance res-block"><pre class="res-block-inner"><a href="output/Ext.util.Observable.html" ext:member="" ext:cls="Ext.util.Observable">Observable</a>
  <img src="resources/elbow-end.gif"><a href="output/Ext.data.Proxy.html" ext:member="" ext:cls="Ext.data.Proxy">Proxy</a>
    <img src="resources/elbow-end.gif"><a href="output/Ext.data.ClientProxy.html" ext:member="" ext:cls="Ext.data.ClientProxy">ClientProxy</a>
      <img src="resources/elbow-end.gif"><a href="output/Ext.data.WebStorageProxy.html" ext:member="" ext:cls="Ext.data.WebStorageProxy">WebStorageProxy</a>
        <img src="resources/elbow-end.gif">LocalStorageProxy</pre></div><h1>Class <a href="source/LocalStorageProxy.html#cls-Ext.data.LocalStorageProxy">Ext.data.LocalStorageProxy</a></h1><table cellspacing="0"><tr><td class="label">Package:</td><td class="hd-info">Ext.data</td></tr><tr><td class="label">Defined In:</td><td class="hd-info"><a href="source/LocalStorageProxy.html#cls-Ext.data.LocalStorageProxy">LocalStorageProxy.js</a></td></tr><tr><td class="label">Class:</td><td class="hd-info"><a href="source/LocalStorageProxy.html#cls-Ext.data.LocalStorageProxy">LocalStorageProxy</a></td></tr><tr><td class="label">Extends:</td><td class="hd-info"><a href="output/Ext.data.WebStorageProxy.html" ext:cls="Ext.data.WebStorageProxy" ext:member="">WebStorageProxy</a></td></tr></table><div class="description"><p>Proxy which uses HTML5 local storage as its data storage/retrieval mechanism.
If this proxy is used in a browser where local storage is not supported, the constructor will throw an error.
A local storage proxy requires a unique ID which is used as a key in which all record data are stored in the
local storage object.</p>
<p>It's important to supply this unique ID as it cannot be reliably determined otherwise. If no id is provided
but the attached store has a storeId, the storeId will be used. If neither option is presented the proxy will
throw an error.</p>
<p>Proxies are almost always used with a <a href="output/Ext.data.Store.html" ext:cls="Ext.data.Store">store</a>:<p>
<pre><code><b>new</b> Ext.data.Store({
    proxy: {
        type: <em>'localstorage'</em>,
        id  : <em>'myProxyKey'</em>
    }
});</code></pre>
<p>Alternatively you can instantiate the Proxy directly:</p>
<pre><code><b>new</b> Ext.data.LocalStorageProxy({
    id  : <em>'myOtherProxyKey'</em>
});</code></pre></div><div class="hr"></div><a id="Ext.data.LocalStorageProxy-configs"></a><h2>Config Options</h2><table cellspacing="0" class="member-table"><tbody><tr><th colspan="2" class="sig-header">Config Options</th><th class="msource-header">Defined By</th></tr><tr class="config-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Proxy-batchOrder"></a><b><a href="source/Proxy.html#cfg-Ext.data.Proxy-batchOrder">batchOrder</a></b> : String<div class="mdesc"><div class="short">Comma-separated ordering 'create', 'update' and 'destroy' actions when batching. Override this
to set a different ord...</div><div class="long">Comma-separated ordering 'create', 'update' and 'destroy' actions when batching. Override this
to set a different order for the batched CRUD actions to be executed in. Defaults to 'create,update,destroy'</div></div></td><td class="msource"><a href="output/Ext.data.Proxy.html#batchOrder" ext:member="#batchOrder" ext:cls="Ext.data.Proxy">Proxy</a></td></tr><tr class="config-row  inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Proxy-defaultReaderType"></a><b><a href="source/Proxy.html#cfg-Ext.data.Proxy-defaultReaderType">defaultReaderType</a></b> : String<div class="mdesc">The default registered reader type. Defaults to 'json'</div></td><td class="msource"><a href="output/Ext.data.Proxy.html#defaultReaderType" ext:member="#defaultReaderType" ext:cls="Ext.data.Proxy">Proxy</a></td></tr><tr class="config-row  inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Proxy-defaultWriterType"></a><b><a href="source/Proxy.html#cfg-Ext.data.Proxy-defaultWriterType">defaultWriterType</a></b> : String<div class="mdesc">The default registered writer type. Defaults to 'json'</div></td><td class="msource"><a href="output/Ext.data.Proxy.html#defaultWriterType" ext:member="#defaultWriterType" ext:cls="Ext.data.Proxy">Proxy</a></td></tr><tr class="config-row  inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.WebStorageProxy-id"></a><b><a href="source/WebStorageProxy.html#cfg-Ext.data.WebStorageProxy-id">id</a></b> : String<div class="mdesc">The unique ID used as the key in which all record data are stored in the local storage object</div></td><td class="msource"><a href="output/Ext.data.WebStorageProxy.html#id" ext:member="#id" ext:cls="Ext.data.WebStorageProxy">WebStorageProxy</a></td></tr><tr class="config-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.util.Observable-listeners"></a><b><a href="source/Observable.html#cfg-Ext.util.Observable-listeners">listeners</a></b> : Object<div class="mdesc"><div class="short">A config object containing one or more event handlers to be added to this
object during initialization.  This should ...</div><div class="long"><p>A config object containing one or more event handlers to be added to this
object during initialization.  This should be a valid listeners config object as specified in the
<a href="output/Ext.util.Observable.html#Ext.util.Observable-addListener" ext:member="addListener" ext:cls="Ext.util.Observable">addListener</a> example for attaching multiple handlers at once.</p>
<br><p><b><u>DOM events from ExtJs <a href="output/Ext.Component.html" ext:cls="Ext.Component">Components</a></u></b></p>
<br><p>While <i>some</i> ExtJs Component classes export selected DOM events (e.g. "click", "mouseover" etc), this
is usually only done when extra value can be added. For example the <a href="output/Ext.DataView.html" ext:cls="Ext.DataView">DataView</a>'s
<b><code><a href="output/Ext.DataView.html#Ext.DataView-click" ext:member="click" ext:cls="Ext.DataView">click</a></code></b> event passing the node clicked on. To access DOM
events directly from a a child element of a Component, we need to specify this explicitly:
<pre><code><b>new</b> Ext.Panel({
    width: 400,
    height: 200,
    dockedItems: [{
        xtype: <em>'toolbar'</em>
    }],
    listeners: {
        click: {
            element: <em>'el'</em>, <i>//bind to the underlying el property on the panel</i>
            fn: <b>function</b>(){ console.log(<em>'click el'</em>); }
        },
        dblclick: {
            element: <em>'body'</em>, <i>//bind to the underlying body property on the panel</i>
            fn: <b>function</b>(){ console.log(<em>'dblclick body'</em>); }
        }
    }
});</code></pre>
</p></div></div></td><td class="msource"><a href="output/Ext.util.Observable.html#listeners" ext:member="#listeners" ext:cls="Ext.util.Observable">Observable</a></td></tr></tbody></table><a id="Ext.data.LocalStorageProxy-props"></a><h2>Public Properties</h2><table cellspacing="0" class="member-table"><tbody><tr><th colspan="2" class="sig-header">Property</th><th class="msource-header">Defined By</th></tr><tr class="property-row  inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.WebStorageProxy-cache"></a><b><a href="source/WebStorageProxy.html#prop-Ext.data.WebStorageProxy-cache">cache</a></b> : Object<div class="mdesc">Cached map of records already retrieved by this Proxy - ensures that the same instance is always retrieved</div></td><td class="msource"><a href="output/Ext.data.WebStorageProxy.html#cache" ext:member="#cache" ext:cls="Ext.data.WebStorageProxy">WebStorageProxy</a></td></tr></tbody></table><a id="Ext.data.LocalStorageProxy-methods"></a><h2>Public Methods</h2><table cellspacing="0" class="member-table"><tbody><tr><th colspan="2" class="sig-header">Method</th><th class="msource-header">Defined By</th></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.util.Observable-addEvents"></a><b><a href="source/Observable.html#method-Ext.util.Observable-addEvents">addEvents</a></b>(&nbsp;<code>Object|String&nbsp;o</code>,&nbsp;<code>string&nbsp;Optional.</code>&nbsp;)
    :
                                        void<div class="mdesc"><div class="short">Adds the specified events to the list of events which this Observable may fire.</div><div class="long">Adds the specified events to the list of events which this Observable may fire.<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>o</code> : Object|String<div class="sub-desc">Either an object with event names as properties with a value of <code>true</code>
or the first event name string if multiple event names are being passed as separate parameters.</div></li><li><code>Optional.</code> : string<div class="sub-desc">Event name if multiple event names are being passed as separate parameters.
Usage:<pre><code>this.addEvents(<em>'storeloaded'</em>, <em>'storecleared'</em>);</code></pre></div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.util.Observable.html#addEvents" ext:member="#addEvents" ext:cls="Ext.util.Observable">Observable</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.util.Observable-addListener"></a><b><a href="source/Observable.html#method-Ext.util.Observable-addListener">addListener</a></b>(&nbsp;<code>String&nbsp;eventName</code>,&nbsp;<code>Function&nbsp;handler</code>,&nbsp;<span title="Optional" class="optional">[<code>Object&nbsp;scope</code>]</span>,&nbsp;<span title="Optional" class="optional">[<code>Object&nbsp;options</code>]</span>&nbsp;)
    :
                                        void<div class="mdesc"><div class="short">Appends an event handler to this object.</div><div class="long">Appends an event handler to this object.<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>eventName</code> : String<div class="sub-desc">The name of the event to listen for.</div></li><li><code>handler</code> : Function<div class="sub-desc">The method the event invokes.</div></li><li><code>scope</code> : Object<div class="sub-desc">(optional) The scope (<code><b>this</b></code> reference) in which the handler function is executed.
<b>If omitted, defaults to the object which fired the event.</b></div></li><li><code>options</code> : Object<div class="sub-desc">(optional) An object containing handler configuration.
properties. This may contain any of the following properties:<ul>
<li><b>scope</b> : Object<div class="sub-desc">The scope (<code><b>this</b></code> reference) in which the handler function is executed.
<b>If omitted, defaults to the object which fired the event.</b></div></li>
<li><b>delay</b> : Number<div class="sub-desc">The number of milliseconds to delay the invocation of the handler after the event fires.</div></li>
<li><b>single</b> : Boolean<div class="sub-desc">True to add a handler to handle just the next firing of the event, and then remove itself.</div></li>
<li><b>buffer</b> : Number<div class="sub-desc">Causes the handler to be scheduled to run in an <a href="output/Ext.util.DelayedTask.html" ext:cls="Ext.util.DelayedTask">Ext.util.DelayedTask</a> delayed
by the specified number of milliseconds. If the event fires again within that time, the original
handler is <em>not</em> invoked, but the new handler is scheduled in its place.</div></li>
<li><b>target</b> : Observable<div class="sub-desc">Only call the handler if the event was fired on the target Observable, <i>not</i>
if the event was bubbled up from a child Observable.</div></li>
<li><b>element</b> : String<div class="sub-desc">The element reference on the component to bind the event to. This is used to bind DOM events to underlying elements on <a href="output/Ext.Component.html" ext:cls="Ext.Component">Components</a>. - This option is only valid for listeners bound to <a href="output/Ext.Component.html" ext:cls="Ext.Component">Components</a></div></li>
</ul><br>
<p>
<b>Combining Options</b><br>
Using the options argument, it is possible to combine different types of listeners:<br>
<br>
A delayed, one-time listener.
<pre><code>myPanel.on(<em>'hide'</em>, this.onClick, this, {
single: true,
delay: 100
});</code></pre>
<p>
<b>Attaching multiple handlers in 1 call</b><br>
The method also allows for a single argument to be passed which is a config object containing properties
which specify multiple handlers.
<p></div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.util.Observable.html#addListener" ext:member="#addListener" ext:cls="Ext.util.Observable">Observable</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.util.Observable-addManagedListener"></a><b><a href="source/Observable.html#method-Ext.util.Observable-addManagedListener">addManagedListener</a></b>(&nbsp;<code>Observable|Element&nbsp;item</code>,&nbsp;<code>Object|String&nbsp;ename</code>,&nbsp;<code>Function&nbsp;fn</code>,&nbsp;<code>Object&nbsp;scope</code>,&nbsp;<code>Object&nbsp;opt</code>&nbsp;)
    :
                                        void<div class="mdesc"><div class="short">Adds listeners to any Observable object (or Element) which are automatically removed when this Component
is destroyed...</div><div class="long"><p>Adds listeners to any Observable object (or Element) which are automatically removed when this Component
is destroyed.<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>item</code> : Observable|Element<div class="sub-desc">The item to which to add a listener/listeners.</div></li><li><code>ename</code> : Object|String<div class="sub-desc">The event name, or an object containing event name properties.</div></li><li><code>fn</code> : Function<div class="sub-desc">Optional. If the <code>ename</code> parameter was an event name, this
is the handler function.</div></li><li><code>scope</code> : Object<div class="sub-desc">Optional. If the <code>ename</code> parameter was an event name, this
is the scope (<code>this</code> reference) in which the handler function is executed.</div></li><li><code>opt</code> : Object<div class="sub-desc">Optional. If the <code>ename</code> parameter was an event name, this
is the <a href="output/Ext.util.Observable.html#Ext.util.Observable-addListener" ext:member="addListener" ext:cls="Ext.util.Observable">addListener</a> options.</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.util.Observable.html#addManagedListener" ext:member="#addManagedListener" ext:cls="Ext.util.Observable">Observable</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Proxy-batch"></a><b><a href="source/Proxy.html#method-Ext.data.Proxy-batch">batch</a></b>(&nbsp;<code>Object&nbsp;operations</code>,&nbsp;<code>Object&nbsp;listeners</code>&nbsp;)
    :
                                        Ext.data.Batch<div class="mdesc"><div class="short">Performs a batch of Operations, in the order specified by batchOrder. Used internally by
Ext.data.Store's sync method...</div><div class="long">Performs a batch of <a href="output/Ext.data.Operation.html" ext:cls="Ext.data.Operation">Operations</a>, in the order specified by <a href="output/Ext.data.Proxy.html#Ext.data.Proxy-batchOrder" ext:member="batchOrder" ext:cls="Ext.data.Proxy">batchOrder</a>. Used internally by
<a href="output/Ext.data.Store.html" ext:cls="Ext.data.Store">Ext.data.Store</a>'s <a href="output/Ext.data.Store.html#Ext.data.Store-sync" ext:member="sync" ext:cls="Ext.data.Store">sync</a> method. Example usage:
<pre><code>myProxy.batch({
create : [myModel1, myModel2],
update : [myModel3],
destroy: [myModel4, myModel5]
});</code></pre>
Where the myModel* above are <a href="output/Ext.data.Model.html" ext:cls="Ext.data.Model">Model</a> instances - in this case 1 and 2 are new instances and have not been 
saved before, 3 has been saved previously but needs to be updated, and 4 and 5 have already been saved but should now be destroyed.<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>operations</code> : Object<div class="sub-desc">Object containing the Model instances to act upon, keyed by action name</div></li><li><code>listeners</code> : Object<div class="sub-desc">Optional listeners object passed straight through to the Batch - see <a href="output/Ext.data.Batch.html" ext:cls="Ext.data.Batch">Ext.data.Batch</a></div></li></ul><strong>Returns:</strong><ul><li><code>Ext.data.Batch</code><div class="sub-desc">The newly created Ext.data.Batch object</div></li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Proxy.html#batch" ext:member="#batch" ext:cls="Ext.data.Proxy">Proxy</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.WebStorageProxy-clear"></a><b><a href="source/WebStorageProxy.html#method-Ext.data.WebStorageProxy-clear">clear</a></b>()
    :
                                        void<div class="mdesc"><div class="short">Destroys all records stored in the proxy and removes all keys and values used to support the proxy from the storage o...</div><div class="long">Destroys all records stored in the proxy and removes all keys and values used to support the proxy from the storage object<div class="mdetail-params"><strong>Parameters:</strong><ul><li>None.</li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.WebStorageProxy.html#clear" ext:member="#clear" ext:cls="Ext.data.WebStorageProxy">WebStorageProxy</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.util.Observable-clearListeners"></a><b><a href="source/Observable.html#method-Ext.util.Observable-clearListeners">clearListeners</a></b>()
    :
                                        void<div class="mdesc"><div class="short">Removes all listeners for this object including the managed listeners</div><div class="long">Removes all listeners for this object including the managed listeners<div class="mdetail-params"><strong>Parameters:</strong><ul><li>None.</li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.util.Observable.html#clearListeners" ext:member="#clearListeners" ext:cls="Ext.util.Observable">Observable</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.util.Observable-clearManagedListeners"></a><b><a href="source/Observable.html#method-Ext.util.Observable-clearManagedListeners">clearManagedListeners</a></b>()
    :
                                        void<div class="mdesc"><div class="short">Removes all managed listeners for this object.</div><div class="long">Removes all managed listeners for this object.<div class="mdetail-params"><strong>Parameters:</strong><ul><li>None.</li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.util.Observable.html#clearManagedListeners" ext:member="#clearManagedListeners" ext:cls="Ext.util.Observable">Observable</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Proxy-create"></a><b><a href="source/Proxy.html#method-Ext.data.Proxy-create">create</a></b>(&nbsp;<code>Ext.data.Operation&nbsp;operation</code>,&nbsp;<code>Function&nbsp;callback</code>,&nbsp;<code>Object&nbsp;scope</code>&nbsp;)
    :
                                        void<div class="mdesc"><div class="short">Performs the given create operation.</div><div class="long">Performs the given create operation.<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>operation</code> : Ext.data.Operation<div class="sub-desc">The Operation to perform</div></li><li><code>callback</code> : Function<div class="sub-desc">Callback function to be called when the Operation has completed (whether successful or not)</div></li><li><code>scope</code> : Object<div class="sub-desc">Scope to execute the callback function in</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Proxy.html#create" ext:member="#create" ext:cls="Ext.data.Proxy">Proxy</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Proxy-destroy"></a><b><a href="source/Proxy.html#method-Ext.data.Proxy-destroy">destroy</a></b>(&nbsp;<code>Ext.data.Operation&nbsp;operation</code>,&nbsp;<code>Function&nbsp;callback</code>,&nbsp;<code>Object&nbsp;scope</code>&nbsp;)
    :
                                        void<div class="mdesc"><div class="short">Performs the given destroy operation.</div><div class="long">Performs the given destroy operation.<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>operation</code> : Ext.data.Operation<div class="sub-desc">The Operation to perform</div></li><li><code>callback</code> : Function<div class="sub-desc">Callback function to be called when the Operation has completed (whether successful or not)</div></li><li><code>scope</code> : Object<div class="sub-desc">Scope to execute the callback function in</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Proxy.html#destroy" ext:member="#destroy" ext:cls="Ext.data.Proxy">Proxy</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.util.Observable-enableBubble"></a><b><a href="source/Observable.html#method-Ext.util.Observable-enableBubble">enableBubble</a></b>(&nbsp;<code>String/Array&nbsp;events</code>&nbsp;)
    :
                                        void<div class="mdesc"><div class="short">Enables events fired by this Observable to bubble up an owner hierarchy by calling
this.getBubbleTarget() if present....</div><div class="long"><p>Enables events fired by this Observable to bubble up an owner hierarchy by calling
<code>this.getBubbleTarget()</code> if present. There is no implementation in the Observable base class.</p>
<p>This is commonly used by Ext.Components to bubble events to owner Containers. See <a href="output/Ext.Component.getBubbleTarget.html" ext:cls="Ext.Component.getBubbleTarget">Ext.Component.getBubbleTarget</a>. The default
implementation in Ext.Component returns the Component's immediate owner. But if a known target is required, this can be overridden to
access the required target more quickly.</p>
<p>Example:</p><pre><code>Ext.override(Ext.form.Field, {
<i>//  Add functionality to Field&#39;s initComponent to enable the change event to bubble</i>
initComponent : Ext.createSequence(Ext.form.Field.prototype.initComponent, <b>function</b>() {
    this.enableBubble(<em>'change'</em>);
}),

<i>//  We know that we want Field&#39;s events to bubble directly to the FormPanel.</i>
getBubbleTarget : <b>function</b>() {
    <b>if</b> (!this.formPanel) {
        this.formPanel = this.findParentByType(<em>'form'</em>);
    }
    <b>return</b> this.formPanel;
}
});

<b>var</b> myForm = <b>new</b> Ext.formPanel({
title: <em>'User Details'</em>,
items: [{
    ...
}],
listeners: {
    change: <b>function</b>() {
        <i>// Title goes red <b>if</b> form has been modified.</i>
        myForm.header.setStyle(<em>'color'</em>, <em>'red'</em>);
    }
}
});</code></pre><div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>events</code> : String/Array<div class="sub-desc">The event name to bubble, or an Array of event names.</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.util.Observable.html#enableBubble" ext:member="#enableBubble" ext:cls="Ext.util.Observable">Observable</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.util.Observable-fireEvent"></a><b><a href="source/Observable.html#method-Ext.util.Observable-fireEvent">fireEvent</a></b>(&nbsp;<code>String&nbsp;eventName</code>,&nbsp;<code>Object...&nbsp;args</code>&nbsp;)
    :
                                        Boolean<div class="mdesc"><div class="short">Fires the specified event with the passed parameters (minus the event name).
An event may be set to bubble up an Obse...</div><div class="long"><p>Fires the specified event with the passed parameters (minus the event name).</p>
<p>An event may be set to bubble up an Observable parent hierarchy (See <a href="output/Ext.Component.html#Ext.Component-getBubbleTarget" ext:member="getBubbleTarget" ext:cls="Ext.Component">Ext.Component.getBubbleTarget</a>)
by calling <a href="output/Ext.util.Observable.html#Ext.util.Observable-enableBubble" ext:member="enableBubble" ext:cls="Ext.util.Observable">enableBubble</a>.</p><div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>eventName</code> : String<div class="sub-desc">The name of the event to fire.</div></li><li><code>args</code> : Object...<div class="sub-desc">Variable number of parameters are passed to handlers.</div></li></ul><strong>Returns:</strong><ul><li><code>Boolean</code><div class="sub-desc">returns false if any of the handlers return false otherwise it returns true.</div></li></ul></div></div></div></td><td class="msource"><a href="output/Ext.util.Observable.html#fireEvent" ext:member="#fireEvent" ext:cls="Ext.util.Observable">Observable</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Proxy-getModel"></a><b><a href="source/Proxy.html#method-Ext.data.Proxy-getModel">getModel</a></b>()
    :
                                        Ext.data.Model<div class="mdesc"><div class="short">Returns the model attached to this Proxy</div><div class="long">Returns the model attached to this Proxy<div class="mdetail-params"><strong>Parameters:</strong><ul><li>None.</li></ul><strong>Returns:</strong><ul><li><code>Ext.data.Model</code><div class="sub-desc">The model</div></li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Proxy.html#getModel" ext:member="#getModel" ext:cls="Ext.data.Proxy">Proxy</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Proxy-getReader"></a><b><a href="source/Proxy.html#method-Ext.data.Proxy-getReader">getReader</a></b>()
    :
                                        Ext.data.Reader<div class="mdesc"><div class="short">Returns the reader currently attached to this proxy instance</div><div class="long">Returns the reader currently attached to this proxy instance<div class="mdetail-params"><strong>Parameters:</strong><ul><li>None.</li></ul><strong>Returns:</strong><ul><li><code>Ext.data.Reader</code><div class="sub-desc">The Reader instance</div></li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Proxy.html#getReader" ext:member="#getReader" ext:cls="Ext.data.Proxy">Proxy</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Proxy-getWriter"></a><b><a href="source/Proxy.html#method-Ext.data.Proxy-getWriter">getWriter</a></b>()
    :
                                        Ext.data.Writer<div class="mdesc"><div class="short">Returns the writer currently attached to this proxy instance</div><div class="long">Returns the writer currently attached to this proxy instance<div class="mdetail-params"><strong>Parameters:</strong><ul><li>None.</li></ul><strong>Returns:</strong><ul><li><code>Ext.data.Writer</code><div class="sub-desc">The Writer instance</div></li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Proxy.html#getWriter" ext:member="#getWriter" ext:cls="Ext.data.Proxy">Proxy</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.util.Observable-hasListener"></a><b><a href="source/Observable.html#method-Ext.util.Observable-hasListener">hasListener</a></b>(&nbsp;<code>String&nbsp;eventName</code>&nbsp;)
    :
                                        Boolean<div class="mdesc"><div class="short">Checks to see if this object has any listeners for a specified event</div><div class="long">Checks to see if this object has any listeners for a specified event<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>eventName</code> : String<div class="sub-desc">The name of the event to check for</div></li></ul><strong>Returns:</strong><ul><li><code>Boolean</code><div class="sub-desc">True if the event is being listened for, else false</div></li></ul></div></div></div></td><td class="msource"><a href="output/Ext.util.Observable.html#hasListener" ext:member="#hasListener" ext:cls="Ext.util.Observable">Observable</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.util.Observable-on"></a><b><a href="source/Observable.html#method-Ext.util.Observable-on">on</a></b>(&nbsp;<code>String&nbsp;eventName</code>,&nbsp;<code>Function&nbsp;handler</code>,&nbsp;<span title="Optional" class="optional">[<code>Object&nbsp;scope</code>]</span>,&nbsp;<span title="Optional" class="optional">[<code>Object&nbsp;options</code>]</span>&nbsp;)
    :
                                        void<div class="mdesc"><div class="short">Appends an event handler to this object (shorthand for addListener.)</div><div class="long">Appends an event handler to this object (shorthand for <a href="output/Ext.util.Observable.html#Ext.util.Observable-addListener" ext:member="addListener" ext:cls="Ext.util.Observable">addListener</a>.)<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>eventName</code> : String<div class="sub-desc">The type of event to listen for</div></li><li><code>handler</code> : Function<div class="sub-desc">The method the event invokes</div></li><li><code>scope</code> : Object<div class="sub-desc">(optional) The scope (<code><b>this</b></code> reference) in which the handler function is executed.
<b>If omitted, defaults to the object which fired the event.</b></div></li><li><code>options</code> : Object<div class="sub-desc">(optional) An object containing handler configuration.</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.util.Observable.html#on" ext:member="#on" ext:cls="Ext.util.Observable">Observable</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Proxy-read"></a><b><a href="source/Proxy.html#method-Ext.data.Proxy-read">read</a></b>(&nbsp;<code>Ext.data.Operation&nbsp;operation</code>,&nbsp;<code>Function&nbsp;callback</code>,&nbsp;<code>Object&nbsp;scope</code>&nbsp;)
    :
                                        void<div class="mdesc"><div class="short">Performs the given read operation.</div><div class="long">Performs the given read operation.<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>operation</code> : Ext.data.Operation<div class="sub-desc">The Operation to perform</div></li><li><code>callback</code> : Function<div class="sub-desc">Callback function to be called when the Operation has completed (whether successful or not)</div></li><li><code>scope</code> : Object<div class="sub-desc">Scope to execute the callback function in</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Proxy.html#read" ext:member="#read" ext:cls="Ext.data.Proxy">Proxy</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.util.Observable-relayEvents"></a><b><a href="source/Observable.html#method-Ext.util.Observable-relayEvents">relayEvents</a></b>(&nbsp;<code>Object&nbsp;o</code>,&nbsp;<code>Array&nbsp;events</code>&nbsp;)
    :
                                        void<div class="mdesc"><div class="short">Relays selected events from the specified Observable as if the events were fired by this.</div><div class="long">Relays selected events from the specified Observable as if the events were fired by <tt><b>this</b></tt>.<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>o</code> : Object<div class="sub-desc">The Observable whose events this object is to relay.</div></li><li><code>events</code> : Array<div class="sub-desc">Array of event names to relay.</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.util.Observable.html#relayEvents" ext:member="#relayEvents" ext:cls="Ext.util.Observable">Observable</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.util.Observable-removeListener"></a><b><a href="source/Observable.html#method-Ext.util.Observable-removeListener">removeListener</a></b>(&nbsp;<code>String&nbsp;eventName</code>,&nbsp;<code>Function&nbsp;handler</code>,&nbsp;<span title="Optional" class="optional">[<code>Object&nbsp;scope</code>]</span>&nbsp;)
    :
                                        void<div class="mdesc"><div class="short">Removes an event handler.</div><div class="long">Removes an event handler.<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>eventName</code> : String<div class="sub-desc">The type of event the handler was associated with.</div></li><li><code>handler</code> : Function<div class="sub-desc">The handler to remove. <b>This must be a reference to the function passed into the <a href="output/Ext.util.Observable.html#Ext.util.Observable-addListener" ext:member="addListener" ext:cls="Ext.util.Observable">addListener</a> call.</b></div></li><li><code>scope</code> : Object<div class="sub-desc">(optional) The scope originally specified for the handler.</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.util.Observable.html#removeListener" ext:member="#removeListener" ext:cls="Ext.util.Observable">Observable</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.util.Observable-removeManagedListener"></a><b><a href="source/Observable.html#method-Ext.util.Observable-removeManagedListener">removeManagedListener</a></b>(&nbsp;<code>Observable|Element&nbsp;item</code>,&nbsp;<code>Object|String&nbsp;ename</code>,&nbsp;<code>Function&nbsp;fn</code>,&nbsp;<code>Object&nbsp;scope</code>&nbsp;)
    :
                                        void<div class="mdesc"><div class="short">Removes listeners that were added by the mon method.</div><div class="long">Removes listeners that were added by the <a href="output/Ext.util.Observable.html#Ext.util.Observable-mon" ext:member="mon" ext:cls="Ext.util.Observable">mon</a> method.<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>item</code> : Observable|Element<div class="sub-desc">The item from which to remove a listener/listeners.</div></li><li><code>ename</code> : Object|String<div class="sub-desc">The event name, or an object containing event name properties.</div></li><li><code>fn</code> : Function<div class="sub-desc">Optional. If the <code>ename</code> parameter was an event name, this
is the handler function.</div></li><li><code>scope</code> : Object<div class="sub-desc">Optional. If the <code>ename</code> parameter was an event name, this
is the scope (<code>this</code> reference) in which the handler function is executed.</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.util.Observable.html#removeManagedListener" ext:member="#removeManagedListener" ext:cls="Ext.util.Observable">Observable</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.util.Observable-resumeEvents"></a><b><a href="source/Observable.html#method-Ext.util.Observable-resumeEvents">resumeEvents</a></b>()
    :
                                        void<div class="mdesc"><div class="short">Resume firing events. (see suspendEvents)
If events were suspended using the queueSuspended parameter, then all
event...</div><div class="long">Resume firing events. (see <a href="output/Ext.util.Observable.html#Ext.util.Observable-suspendEvents" ext:member="suspendEvents" ext:cls="Ext.util.Observable">suspendEvents</a>)
If events were suspended using the <tt><b>queueSuspended</b></tt> parameter, then all
events fired during event suspension will be sent to any listeners now.<div class="mdetail-params"><strong>Parameters:</strong><ul><li>None.</li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.util.Observable.html#resumeEvents" ext:member="#resumeEvents" ext:cls="Ext.util.Observable">Observable</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Proxy-setModel"></a><b><a href="source/Proxy.html#method-Ext.data.Proxy-setModel">setModel</a></b>(&nbsp;<code>String|Ext.data.Model&nbsp;model</code>,&nbsp;<code>Boolean&nbsp;setOnStore</code>&nbsp;)
    :
                                        void<div class="mdesc"><div class="short">Sets the model associated with this proxy. This will only usually be called by a Store</div><div class="long">Sets the model associated with this proxy. This will only usually be called by a Store<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>model</code> : String|Ext.data.Model<div class="sub-desc">The new model. Can be either the model name string,
or a reference to the model's constructor</div></li><li><code>setOnStore</code> : Boolean<div class="sub-desc">Sets the new model on the associated Store, if one is present</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Proxy.html#setModel" ext:member="#setModel" ext:cls="Ext.data.Proxy">Proxy</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Proxy-setReader"></a><b><a href="source/Proxy.html#method-Ext.data.Proxy-setReader">setReader</a></b>(&nbsp;<code>String|Object|Ext.data.Reader&nbsp;reader</code>&nbsp;)
    :
                                        Ext.data.Reader<div class="mdesc"><div class="short">Sets the Proxy's Reader by string, config object or Reader instance</div><div class="long">Sets the Proxy's Reader by string, config object or Reader instance<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>reader</code> : String|Object|Ext.data.Reader<div class="sub-desc">The new Reader, which can be either a type string, a configuration object
or an Ext.data.Reader instance</div></li></ul><strong>Returns:</strong><ul><li><code>Ext.data.Reader</code><div class="sub-desc">The attached Reader object</div></li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Proxy.html#setReader" ext:member="#setReader" ext:cls="Ext.data.Proxy">Proxy</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.WebStorageProxy-setRecord"></a><b><a href="source/WebStorageProxy.html#method-Ext.data.WebStorageProxy-setRecord">setRecord</a></b>(&nbsp;<code>Ext.data.Model&nbsp;record</code>,&nbsp;<code>String&nbsp;id</code>&nbsp;)
    :
                                        void<div class="mdesc"><div class="short">Saves the given record in the Proxy. Runs each field's encode function (if present) to encode the data</div><div class="long">Saves the given record in the Proxy. Runs each field's encode function (if present) to encode the data<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>record</code> : Ext.data.Model<div class="sub-desc">The model instance</div></li><li><code>id</code> : String<div class="sub-desc">The id to save the record under (defaults to the value of the record's getId() function)</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.WebStorageProxy.html#setRecord" ext:member="#setRecord" ext:cls="Ext.data.WebStorageProxy">WebStorageProxy</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Proxy-setWriter"></a><b><a href="source/Proxy.html#method-Ext.data.Proxy-setWriter">setWriter</a></b>(&nbsp;<code>String|Object|Ext.data.Writer&nbsp;writer</code>&nbsp;)
    :
                                        Ext.data.Writer<div class="mdesc"><div class="short">Sets the Proxy's Writer by string, config object or Writer instance</div><div class="long">Sets the Proxy's Writer by string, config object or Writer instance<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>writer</code> : String|Object|Ext.data.Writer<div class="sub-desc">The new Writer, which can be either a type string, a configuration object
or an Ext.data.Writer instance</div></li></ul><strong>Returns:</strong><ul><li><code>Ext.data.Writer</code><div class="sub-desc">The attached Writer object</div></li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Proxy.html#setWriter" ext:member="#setWriter" ext:cls="Ext.data.Proxy">Proxy</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.util.Observable-suspendEvents"></a><b><a href="source/Observable.html#method-Ext.util.Observable-suspendEvents">suspendEvents</a></b>(&nbsp;<code>Boolean&nbsp;queueSuspended</code>&nbsp;)
    :
                                        void<div class="mdesc"><div class="short">Suspend the firing of all events. (see resumeEvents)</div><div class="long">Suspend the firing of all events. (see <a href="output/Ext.util.Observable.html#Ext.util.Observable-resumeEvents" ext:member="resumeEvents" ext:cls="Ext.util.Observable">resumeEvents</a>)<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>queueSuspended</code> : Boolean<div class="sub-desc">Pass as true to queue up suspended events to be fired
after the <a href="output/Ext.util.Observable.html#Ext.util.Observable-resumeEvents" ext:member="resumeEvents" ext:cls="Ext.util.Observable">resumeEvents</a> call instead of discarding all suspended events;</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.util.Observable.html#suspendEvents" ext:member="#suspendEvents" ext:cls="Ext.util.Observable">Observable</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.util.Observable-un"></a><b><a href="source/Observable.html#method-Ext.util.Observable-un">un</a></b>(&nbsp;<code>String&nbsp;eventName</code>,&nbsp;<code>Function&nbsp;handler</code>,&nbsp;<span title="Optional" class="optional">[<code>Object&nbsp;scope</code>]</span>&nbsp;)
    :
                                        void<div class="mdesc"><div class="short">Removes an event handler (shorthand for removeListener.)</div><div class="long">Removes an event handler (shorthand for <a href="output/Ext.util.Observable.html#Ext.util.Observable-removeListener" ext:member="removeListener" ext:cls="Ext.util.Observable">removeListener</a>.)<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>eventName</code> : String<div class="sub-desc">The type of event the handler was associated with.</div></li><li><code>handler</code> : Function<div class="sub-desc">The handler to remove. <b>This must be a reference to the function passed into the <a href="output/Ext.util.Observable.html#Ext.util.Observable-addListener" ext:member="addListener" ext:cls="Ext.util.Observable">addListener</a> call.</b></div></li><li><code>scope</code> : Object<div class="sub-desc">(optional) The scope originally specified for the handler.</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.util.Observable.html#un" ext:member="#un" ext:cls="Ext.util.Observable">Observable</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Proxy-update"></a><b><a href="source/Proxy.html#method-Ext.data.Proxy-update">update</a></b>(&nbsp;<code>Ext.data.Operation&nbsp;operation</code>,&nbsp;<code>Function&nbsp;callback</code>,&nbsp;<code>Object&nbsp;scope</code>&nbsp;)
    :
                                        void<div class="mdesc"><div class="short">Performs the given update operation.</div><div class="long">Performs the given update operation.<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>operation</code> : Ext.data.Operation<div class="sub-desc">The Operation to perform</div></li><li><code>callback</code> : Function<div class="sub-desc">Callback function to be called when the Operation has completed (whether successful or not)</div></li><li><code>scope</code> : Object<div class="sub-desc">Scope to execute the callback function in</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Proxy.html#update" ext:member="#update" ext:cls="Ext.data.Proxy">Proxy</a></td></tr></tbody></table><a id="Ext.data.LocalStorageProxy-events"></a><h2>Public Events</h2><div class="no-members">This class has no public events.</div></div>